#ifndef _ADC_BTN_H_
#define _ADC_BTN_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"

#include "adc_oneshot.h"

/*使用该库，必须包含adc_oneshot.h*/

// 1: 使用线程方法, 0: 使用LVGL timer组件
#define CALL_METHOD     1
// 使用LVGL timer组件必须包含的头文件
#if !CALL_METHOD
    #include "lvgl.h"
    // 使用gui guider软件生成的界面必须包含该头结点 
    #include "gui_guider.h"
    #include "events_init.h"
#endif

// ADC采集参数结构体
typedef struct {
    adc_oneshot_unit_handle_t adc_handle;
    adc_cali_handle_t adc_cali_chanx_handle;
} adc_collect_para;

// ADC按键命名枚举
typedef enum {
    KEY_VOL_ADD, // ADC按键范围(360 ~ 375)
    KEY_VOL_SUB, // ADC按键范围(790 ~ 805)
    KEY_SET,     // ADC按键范围(1090 ~ 1105)
    KEY_PLAY,    // ADC按键范围(1630 ~ 1645)
    KEY_MUTE,    // ADC按键范围(1965 ~ 1980)
    KEY_REC,     // ADC按键范围(2380 ~ 2405)
} adc_key_t;

// ADC按键
extern int adc_key_val;

extern void adc_key_init(void);

#if CALL_METHOD
#else
extern lv_timer_t* create_timer_btn_start(void);
#endif

#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif


